FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 设置时区为亚洲/上海，安装MySQL客户端和bash
RUN apt-get update && apt-get install -y \
    tzdata \
    curl \
    default-mysql-client \
    bash \
    && ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && dpkg-reconfigure -f noninteractive tzdata \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 首先复制requirements.txt文件
COPY requirements.txt /app/requirements.txt

# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt

# 创建必要的目录
RUN mkdir -p /app/logs /app/instance /app/custom_scripts /app/scripts /app/user_parameters/admin

# 复制启动脚本并设置权限，确保使用Unix行结束符
COPY entrypoint.sh /app/entrypoint.sh
RUN apt-get update && apt-get install -y dos2unix file && \
    dos2unix /app/entrypoint.sh && \
    chmod 755 /app/entrypoint.sh && \
    ls -la /app/entrypoint.sh && \
    head -3 /app/entrypoint.sh && \
    echo "entrypoint.sh复制、转换和权限设置完成"

# 复制生产环境所需的项目文件
COPY services/ /app/services/
COPY templates/ /app/templates/
COPY static/ /app/static/
COPY system_scripts/ /app/system_scripts/
COPY config/ /app/config/
COPY scripts/ /app/scripts/
COPY migrations/ /app/migrations/
COPY user_parameters/ /app/user_parameters/
COPY models.py start_services.py system_management.py run_script.py __init__.py /app/

# 创建必要的初始文件
RUN touch /app/user_parameters/__init__.py /app/user_parameters/admin/__init__.py
RUN echo '{"trino": "aaa"}' > /app/user_parameters/admin/parameters.json

# 暴露端口
EXPOSE 8080 5001 5002 5003

# 设置环境变量
ENV PYTHONPATH=/app \
    TZ=Asia/Shanghai \
    FLASK_ENV=production \
    FLASK_DEBUG=0

# 最终验证entrypoint.sh并清理工具
RUN echo "=== 最终验证 ===" && \
    ls -la /app/entrypoint.sh && \
    echo "检查文件格式:" && \
    file /app/entrypoint.sh && \
    echo "检查是否包含Windows行结束符:" && \
    if hexdump -C /app/entrypoint.sh | grep -q "0d 0a"; then \
        echo "错误: 发现Windows行结束符(CRLF)" && exit 1; \
    else \
        echo "正确: 使用Unix行结束符(LF)"; \
    fi && \
    echo "语法检查:" && \
    bash -n /app/entrypoint.sh && \
    echo "entrypoint.sh验证通过" && \
    echo "清理临时工具..." && \
    apt-get remove -y dos2unix file && \
    apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 启动命令 - 使用bash明确执行启动脚本
CMD ["/bin/bash", "/app/entrypoint.sh"]